import axios from 'axios/index'
axios.defaults.baseURL="http://frp.voidgeek.com:7005/api/"
//axios.defaults.baseURL="http://localhost:8080/api/"
class ApiCaller {
    call({url,
             method = 'GET', body = null,params=null
         }) {
        let p = new Promise(
            (resolve, reject) => {
                axios.request({
                    method: method,
                    url: url,
                    data:body,
                    params:params
                }).then(function (response) {

                    let myResponse = {
                        // 服务端返回的数据
                        data: response.data,
                        // 服务端返回的状态码
                        status: response.status,
                        // 服务端返回的状态信息
                        statusText: response.statusText,
                        // 响应头
                        // 所有的响应头名称都是小写
                        headers: response.headers
                    }
                    resolve(myResponse);

                }).catch(
                    function (error) {

                        // let response = error.response;
                        // let myResponse = {data:null,status:null,statusText:null,
                        // headers:null// 所有的响应头名称都是小写
                        // }
                        // if(null!=response)
                        // {
                        //   myResponse.data=response.data
                        //   myResponse.status=response.status
                        //   myResponse.statusText=response.statusText
                        //   myResponse.headers=response.headers
                        // }
                        // let myErr = { response: myResponse }
                        reject(error)
                    });
            }
        )

        return p;
    }
}

const rootPath = '/api' // 后端 API 根路径

const xhr = ({method = 'get', url, body = null}) => {
    // 由于引入了 es6-shim，因此这里完全可以使用原生 Promise
    const defer = $.Deferred()

    $.ajax({
        type: method,
        url: rootPath + url,
        data: body
        // crossDomain: true, // 跨域
        // xhrFields: { withCredentials: true } // 跨域允许带上 cookie
    })
        .done(res => {
            const {success, errMsg, data} = res
            if (!success) {
                $.toast({heading: '操作失败', text: errMsg, icon: 'warning'})
                return defer.reject(res)
            }
            defer.resolve(data)
        })
        .fail(err => {
            $.toast({heading: '请求 API 失败', icon: 'error', stack: false})
            console.warn(err)
        })

    return defer.promise()
}

export default new ApiCaller()